/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import accesodatos.DaoHechos;
import Logica.Escritor;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author User
 */
public class LoadHechos {
    DaoHechos daoHechos;
    Escritor escritor;
    
    public LoadHechos(){
        daoHechos=new DaoHechos();
        escritor= new Escritor();
    }
    
    public ArrayList<String> ConstruirInsertsAtencionCitas(){
        ArrayList<String> citas = daoHechos.getCitasGenerales();
        ArrayList<String> insertCitas= new ArrayList<>();
        for(int i=0;i<citas.size();i++){
            System.out.println("INSERT INTO atencion_citas (id_medico, id_cliente,id_demografia,id_diagnostico, id_ips, id_fecha_solicitud,id_fecha_atencion, tiempo_espera,costo)" +
                    " VALUES (" +citas.get(i) +");");
            insertCitas.add("INSERT INTO atencion_citas (id_medico, id_cliente,id_demografia,id_diagnostico, id_ips, id_fecha_solicitud,id_fecha_atencion, tiempo_espera,costo)" +
                    " VALUES (" +citas.get(i) +");");
        }
//        try {
//            daoHechos.closeConnections();
//        } catch (SQLException ex) {
//            Logger.getLogger(LoadHechos.class.getName()).log(Level.SEVERE, null, ex);
//        }
        return insertCitas;
    }
    
    public void EscribirArchivoAtencionCitas(){
        escritor.Escribir(ConstruirInsertsAtencionCitas(), "insertAtencionCitas.sql");
    }
    
    public ArrayList<String> ConstruirInsertsCitasEspecializadas(){
        ArrayList<String> citas=daoHechos.getCitasEspecializadas();
        ArrayList<String> insertCitas=new ArrayList<String> ();
        for(int i=0;i<citas.size();i++){
            System.out.println("INSERT INTO atencion_cita_especializada (id_medico_remitente,id_medico_especialista,id_cliente,id_diagnostico,id_pos,"+
                    "id_demografia,id_ips,id_fecha_remision,id_fecha_atencion, costo, tiempo_espera) VALUES " +"("+citas.get(i) +");");
            insertCitas.add("INSERT INTO atencion_cita_especializada (id_medico_remitente,id_medico_especialista,id_cliente,id_diagnostico,id_pos,"+
                    "id_demografia,id_ips,id_fecha_remision,id_fecha_atencion, costo, tiempo_espera) VALUES " +"("+citas.get(i) +");");
                    
        }
//        try {
//            daoHechos.closeConnections();
//        } catch (SQLException ex) {
//            Logger.getLogger(LoadHechos.class.getName()).log(Level.SEVERE, null, ex);
//        }
        return insertCitas;
    }
    
    public void EscribirArchivoCitasEspecializadas(){
        escritor.Escribir(ConstruirInsertsCitasEspecializadas(), "insertCitasEspecializadas.sql");
    }
    
    public ArrayList<String> ConstruirInsertsUrgencias(){
        ArrayList<String> urgencias = daoHechos.getUrgencias();
        ArrayList<String> insertUrgencias= new ArrayList<String>();
        for(int i=0;i<urgencias.size();i++){
            System.out.println("INSERT INTO atencion_urgencias (id_medico, id_cliente,id_demografia,id_diagnostico, id_ips, id_fecha_remision,id_fecha_atencion, tiempo_espera,costo)" +
                    " VALUES (" +urgencias.get(i) +");");
            insertUrgencias.add("INSERT INTO atencion_urgencias (id_medico, id_cliente,id_demografia,id_diagnostico, id_ips, id_fecha_remision,id_fecha_atencion, tiempo_espera,costo)" +
                    " VALUES (" +urgencias.get(i) +");");
        }
//        try {
//            daoHechos.closeConnections();
//        } catch (SQLException ex) {
//            Logger.getLogger(LoadHechos.class.getName()).log(Level.SEVERE, null, ex);
//        }
        return insertUrgencias;
    }
    
    public void EscribirArchivoUrgencias(){
        escritor.Escribir(ConstruirInsertsUrgencias(), "insertAtencionUrgencias.sql");
    }
     
    public ArrayList<String> ConstruirInsertsHospitalizaciones(){
        ArrayList<String> hospitalizaciones = daoHechos.getHospitalizaciones();
        ArrayList<String> insertsHospitalizaciones= new ArrayList<String>();
        for(int i=0;i<hospitalizaciones.size();i++){
            System.out.println("INSERT INTO atencion_hospitalizacion (id_medico, id_cliente,id_demografia,id_diagnostico, id_ips, id_fecha_remision,id_fecha_atencion, costo, tiempo_espera, duracion)" +
                    " VALUES (" +hospitalizaciones.get(i) +");");
            insertsHospitalizaciones.add("INSERT INTO atencion_hospitalizacion  (id_medico, id_cliente,id_demografia,id_diagnostico, id_ips, id_fecha_remision,id_fecha_atencion, costo, tiempo_espera, duracion)" +
                    " VALUES (" +hospitalizaciones.get(i) +");");
        }
//        try {
//            daoHechos.closeConnections();
//        } catch (SQLException ex) {
//            Logger.getLogger(LoadHechos.class.getName()).log(Level.SEVERE, null, ex);
//        }
        return insertsHospitalizaciones;
    }
    
    public void EscribirArchivoHospitalizaciones(){
        escritor.Escribir(ConstruirInsertsHospitalizaciones(), "insertsAtencionHospitalizacion.sql");
    }
    
    public ArrayList<String> ConstruirInsertRetiros(){
        ArrayList<String> retiros =daoHechos.getRetiros();
        ArrayList<String> insertsRetiros = new ArrayList<String>();
        for(int i=0;i<retiros.size();i++){
            System.out.println("INSERT INTO retiros (id_fecha_retiro, id_usuario, id_demografia, EPS_Nueva, motivo_retiro) VALUES " + 
                    "("+retiros.get(i) +");");
            insertsRetiros.add("INSERT INTO retiros (id_fecha_retiro, id_usuario, id_demografia, EPS_Nueva, motivo_retiro) VALUES " + 
                    "("+retiros.get(i) +");");
        }
//        try {
//            daoHechos.closeConnections();
//        } catch (SQLException ex) {
//            Logger.getLogger(LoadHechos.class.getName()).log(Level.SEVERE, null, ex);
//        }
        return insertsRetiros;
    }
    
    public void EscribirArchivoRetiros(){
        escritor.Escribir(ConstruirInsertRetiros(), "insertRetiros.sql");
    }
    
    public ArrayList<String> ConstruirFormulacionMedica(){
        ArrayList<String> formulacionMedica =daoHechos.getFormulacionMedica();
        ArrayList<String> insertFormulacion = new ArrayList<String>();
        for(int i=0;i<formulacionMedica.size();i++){
            System.out.println("INSERT INTO formulacion_medicina (id_fecha, id_medicamento, pos_formula,id_cliente,id_demografia,id_medico,costo) VALUES "
                    + "(" +formulacionMedica.get(i)+");");
            insertFormulacion.add("INSERT INTO formulacion_medicina (id_fecha, id_medicamento, pos_formula,id_cliente,id_demografia,id_medico,costo) VALUES "
                    + "(" +formulacionMedica.get(i)+");");
        }
//        try {
//            daoHechos.closeConnections();
//        } catch (SQLException ex) {
//            Logger.getLogger(LoadHechos.class.getName()).log(Level.SEVERE, null, ex);
//        }
        return insertFormulacion;
        
       
    }
    
     public ArrayList<String> ConstruirPagos(){
        ArrayList<String> pagos =daoHechos.getPagos();
        ArrayList<String> insertPagos = new ArrayList<>();
        for(int i=0;i<pagos.size();i++){
            System.out.println("INSERT INTO pagos (id_usuario, id_fecha, id_demografia,valor_pagado) VALUES "
                    + "(" +pagos.get(i)+");");
            insertPagos.add("INSERT INTO pagos (id_usuario, id_fecha, id_demografia,valor_pagado) VALUES "
                    + "(" +pagos.get(i)+");");
        }
//        try {
//            daoHechos.closeConnections();
//        } catch (SQLException ex) {
//            Logger.getLogger(LoadHechos.class.getName()).log(Level.SEVERE, null, ex);
//        }
        return insertPagos;
        
       
    }
     
     public void EscribirArchivoPagos(){
            escritor.Escribir(ConstruirPagos(), "insertPagos.sql");
    }
    
     public void EscribirArchivoFormulacion(){
            escritor.Escribir(ConstruirFormulacionMedica(), "insertFormulacion.sql");
    }
     
     
    public void EscribirArchivoAfiliacion(){
            escritor.Escribir(ConstruirAfiliacion(), "insertAfiliacion.sql");
    }
    
    
    public ArrayList<String> ConstruirAfiliacion(){
        ArrayList<String> afiliacion =daoHechos.getAfiliacion();
        ArrayList<String> insertsAfiliacion = new ArrayList<String>();
        for(int i=0;i<afiliacion.size();i++){
            System.out.println("INSERT INTO retiros (id_fecha_retiro, id_usuario, id_demografia, EPS_Nueva, motivo_retiro) VALUES " + 
                    "("+afiliacion.get(i) +");");
            insertsAfiliacion.add("INSERT INTO retiros (id_fecha_retiro, id_usuario, id_demografia, EPS_Nueva, motivo_retiro) VALUES " + 
                    "("+afiliacion.get(i) +");");
        }

        return insertsAfiliacion;
    }
     
     
     
//    public static void main (String[] args){
//        LoadHechos l = new LoadHechos();
////        l.EscribirArchivoAtencionCitas();
////        l.EscribirArchivoCitasEspecializadas();
//        //l.EscribirArchivoFormulacion();
////        l.EscribirArchivoHospitalizaciones();
//          //l.EscribirArchivoUrgencias();
//        l.EscribirArchivoPagos();
////        l.EscribirArchivoRetiros();
//        l.EscribirArchivoAfiliacion();
//
//    }
    
}
